^itll JVHbr Mtth ^ir Oritfte! ^ 1
^tntlatr fflnriitftmerxgatt fflgir drmtpg fflgfeglitier
(Chairman
liiiiiiaris
i 1
MEMORY MAP
ADDRESS
2
3
3
4
6
7
8
8
9
10
10
11
13
14
ROUTINES
19
Information and Chairmen — Trea$ury Note$
Input/Output — byAbedKahale
Puzzle — Peter Liebert-Adelt
Sinclair List — Jay Shepard
Sinclair Show— F WD Computing
West Sinclair Show — Tim Swenson
Sinclair E-Mail List
eoODBTE Sinclair- fwd Computing
From The Chairman's Disk — Donald Lambert
FILES
FOP_OVER — Al Feng
LarKen/PASCAL — David Solly
LarKen/HiSoft — David Solly
Speed Comparison - 2068 — David Solly
QL Hacker's Journal — Tim Swenson
SUBROUTINES
Unclassified Ads
8¥ 9
y
infpir^llMP§Ihiiip
ZXir QLive Alive! ©
Established 1991 The Timex/Sinclair NorthAmerican User Groups Newsletter
T/SNUG Information
We wish to support the following
platforms: ZX-80/81, TS-1000,
Spectrum, TS-2068, Z88 and QL. If
you have any questions about any of
these fine Sinclairs, contact the:
Chairman
Chief Motivator
Donald S. Lambert (ISTUG)
Vice-Chairmen
Tape & JLO PD Library
D. G Smith
415 Stone St.
Johnstown, PA 15906
814 535-6998
Z88 Library
Dave Bennett (HATSUG)
1275 Timber View Dr
Mechanicsburg, PA 17055-9146
717 732-4374
QL Hacker's Journal
Timothy Swenson
2455 Medallion Dr
Union City, CA 94587-1914
swensontc@geocities. com
TS-2068
Rod Humphreys (VSUG)
10984 Collins PI
Delta, BC V4C 7E6 Canada
604 583-2819
QL PD Library
John Donaldson (CATUG)
835 Foxwood Cir.
Geneva, JL 60134-1631
630 232-6147
AERCO & Z80 Emulator
Keith Watson
41634 Amberly Dr.
Mt. Clemens, MI 48038
BBS — ==GAT0R= —
Bob Swoger (CATUG)
613 Parkside Cir.
Streamwood, JL 60107-1647
630 837-7957 Work 847 576-8068
Any of the above can also be
reached by E-Mail through the
Club BBS 847 632-5558
ZXir QLive Alive!
Is the newsletter of T/SMJG, the
Timex/Sinclair North American User
Groups, providing news and
software support to the T/S com-
munity in a VOLUME of four
newsletters per year; beginning with
the Spring (March) issue.
T/SNUG's main goal is to
preserve and encourage the
use of Sinclair computers
by providing an open
forum for the exchange of
knowledge, building and
maintaining of software
libraries. Providing
vendors, repair service and
members with free ad
space
It is the user groups and individual
subscribers, rather than the vendors,
that provide the pecuniary support
for this newsletter Vendors and
developers receive this newsletter
free of charge, though contribution
from vendors and user groups is
gratefully accepted. Please support
our vendors and service providers
whenever possible.
If you have a problem or you have
solved a problem, please share it with
the rest of us No problem will be
considered unimportant
Editor/Treasurer
Publisher
ou can keep T/SNUG alive by
an annual contribution of $12
for one VOLUME made payable to
Abed Kahale. Send check to>
ABED KAHALE
3343 S FLAT ROCK CT
SIERRA VISTA AZ 85650-6874
520 378-3424
J
Back copies are available for
$1.00 each postpaid.
<As of Dec. 15, 1998, we have a
balance of $717.03
Article Contributions !
Send in your articles by tape or disk and your
inputs to —
DONALD S LAMBERT
1301 KIBLINGER PL
AUBURN IN 46706-3010
Phone 219 925-1372
By hardcopy, e-mail or modem ( 3-33.6) to:
Abed Kahale
E-mail; AKahale@compuserve.com
elco
Gerald Anson
Louis Floril
David Solly
G At O & 4 S
To better inform the Sinclair Community,
four 24-hour a day BBSs are now provided to serve
you. You are encouraged to exchange mail and use
the files sections of these boards. Bulletins and ads
are available to all.
Q-BoxBBS 810 254-9878
Utica, Michigan
SCC Sever Jose Moreno
http ://members.tripod. com/~helpme/
SOL BBS 520 882-0388
Tucson, Arizona
Club BBS 847 632-5558
Arlington Heights, Illinois
If you know the Internet E-Mail address of a
Sinclair user, but do not have access to Internet,
simply address your E-Mail to GATOR Sinclair on
the 24-hour Club BBS and include the name and E-
Mail address of the user you wish to reach. Then
check the Club BBS from time to time if you expect
a reply
We encourage you to exchange mail and
contribute to the UPLOAD section Call
and register using your first, last name and phone
number along with a password you won't forget.
Write It Down! Do not try to do anything else at
this time.
When you call-in the next time, you will have
Level 5 security and be able to enjoy full
user privileges The BBS has smaller sections
called conferences. Select "J " for "Join a Confer-
ence". Select "TIMEX" to get into the Sinclair
Section. The mail you then read will only be from
other T/S users. Use extension .ART for articles,
.ADS for ads and .NWS for news when
UPLOADing.
For help, contact the SYSOP, Bob Swoger, by
leaving a message, mail, E-Mail or phone
CENG1 08@email mot com
ZXir QLive Alive!
2
Winter 1998
Input/Output
i
I got the newsletter, ZQA! - another great job! Nice
comment made about the Arizona scenery!
J. Shepard and his wife Karen and son Adam - are
coming out to the Glenside picnic this Saturday. Sauter and
Herre will be here also. 26 people expected.
— ==GATOR==—
This has been like a very long lost weekend for me
just realized that I haven't received any
Timex mages for a while. I am
guessing that my subscription elapsed
and I was more concerned with hands
that didn't work (rheumatoid arthritis).
How much to get reinstated and collect
backs issues that I have missed?
By the way thanks for the humor
messages. You will notice that this is a
different e-mail address and I would
rather use it. Thanks again.
Les Cottrell
I was reading what Bob Hartung
wrote about the nice photos you put in
the newsletter and got to thinking that
maybe T/SNIJG could "spring" for a
color printer for you so you could send
us those beauties in color! Heck, you
can get a good color printer these days
for around $200 and all you would have
to do is print out as many title pages as
you needed and still do the rest of it on
a copier. I suppose it might be more
hassle than what you're doing now, but
it would sure be pretty neat. Anyway,
if it takes a vote of the membership I'll
cast mine in favor. ;-)
I've gotten a little more interest in the RMG items, but
it has really slowed down lately. That's OK, as I've been
pretty busy at work. Summer is the busy time for bridge
and highway construction and I've been putting in a lot of
hours. It's just now starting to slow down a little Right
now I'm in charge of 5 projects with a total cost of about
$23 million. Kind of mind-boggling sometimes. I still
haven't heard from Dan Elliott since he sent me the card
letting me know he was getting to work on the LarKen and
2068 I sent him. That's been at least 2 months ago. I think
I'll give him a call tonight to see what's going on. Anyway,
thanks for your work on ZQA and helping keep these
computers alive.
Take care, Jack Boatwright
/ Wish, I wish, I wish we could have color pictures
in the Newsletter, but the cost will be prohibitive at
$1.00 extra per one copied page. Etc etc
Hello Abed, ~
I know the cartridges are pretty expensive, but it still
would be neat to see those pictures in color! Tell you what,
Til chip in some $ if you think it would be something you
might do.
I still haven't heard from Dan Elliott since he sent me
the card letting me know he was getting to work on the
A ZQA! reader advised the editor of
his displeasure because of
publishing his opinions in a
previous issue. His Email
contained material related to the
Timex/Sinciair community, so it was
published. He did not advise that
the material was not for publication.
ZQA! Newsletter is for and by T/S
groups and anything related to T/S
will be published unless the person
so indicates that it is not intended
for publication.
This Newsletter is not the National
inquirer or NewsWeek. Most of us
know or are familiar with those
whose names appear in the
Newsletter— the T/S family group.
The Editors feels that any and all
T/S related material will be
published uniess noted otherwise.
'Editor
ago I think I'll give him a call tonight to see what's going
on.
Yes, you better give him a call, he either forgot
about you or it is a bigger job than he thought.
I did call him and got the answering machine
Hopefully I'll hear something more from him soon. In an
email I got from Jay a while back I thought he indicated
that he was going to send one of the ones
that Rod sent him, but so far I haven't seen
it either I haven't had enough time to set up
the Qliger with LarKen DOS that I bought
the last time I picked up stuff at Rod's. I
should just make sure it works.
Yes, I would like to be on your humor
e-mailng list Some of it is pretty funny
With the way things are going in
Washington these days, we need some
humor Later,
Jack Boatwright
To: Gil Parrish
1 07765 1161 @compuserve corn
Cc: akahale@compuserve.com
Subject: ZQA! Vol. 8 No.
Pu zz le
LarKen and 2068 I sent him. That's been at least 2 months subject line
Hi Gil and Abed,
I'm writing my answer on your
"puzzle-request" in ZXir QLive Alive! as
an article, so Abed can use it for the next
issue.
In ZQA! Autumn 1998 on page 6, Gil
Parrish asked for help about a video
interface. Of course it's a little bit difficult
to do some telediagnosis from good old Germany, but I
think I will not be wrong with the following information:
Your interface is a colour-interface-module for
PC8300. We have some of them in ZX-TEAM too.
Plug the interface into your PC8300, connect the short lead
with the monitor jack of PC8300 and connect your Colour
TV set with the UHF connector, channel 36, or your colour-
monitor with the monitor connector.
But if this will not be successful, first have a look into
your Colour-interface. If you find a crystal with 3 579 MHz
it will be a NTSC interface for the use in the USA. If you
find a 4.433 MHz crystal, it is a PAL-type and you can't use
it in the USA.
The interface works as follows: It has IK Byte RAM-
memory in the area 8192 -9216, used as the colour-file. In
PC8300 the display-file address is fixed and not floating
like in ZX-81. This is important for the use of the colour-
interface. The colour module takes the display-file
information from the monitor output of the PC8300 and
will "mix" it with the colour-file from the interface to build
the colour-signal.
Happy ZXing from Germany
yours "sinclairly" Peter Liebert-Adelt
P.S. join the ZX-81 mailing-list! send an email to:
"listserv@jarasoft.xs4all..nl" with "subscribe ZX81" in the
ZXir QLive Alive!
3
Winter 1998
e-mail: p liebert@t-online.de
http://home.t-online.de/home/pliebert/zx-team htm
Peter Liebert-Adelt
Luetzow Str 3
D-38102 Braunschweig
Germany
Amateur Radio: DK4BF@DB0FC.#NDS.DEU.EU
Hello Abed
I understand that you are the man to contact
concerning membership to T/SMJG and subscribing to the
newsletter. I was BBS sysop and software librarian for the
Ottawa-Hull Timex/Sinclair User Group until it folded for
good around 1993 . I also wrote articles for our newsletter
as well as for Your Sinclair, Time Designs and Update!
I sometimes use a real live T/S 2068 but for the most
part I am now using Gerton Lunter's ZX Spectrum emulator
whenever I need to run Sinclair software.
I still have in my possession all the software — which
has been converted to the LKDOS platform for the most
part — and most of the periodicals and news letters that
were owned by the club. I would be happy to share
whatever I (legally) can with whomever is interested.
I am keenly interested in programming HiSoft
PASCAL for the ZX Spectrum which I run on both the T/S
2068 which has been fitted with a ZX Spectrum emulator
and on Gerton Lunter's emulator. At the moment, I have
not written any serious applications in HiSoft PASCAL.
Most of what I have written has been done out of curiosity
to see if the old T/S can do such-and-such a thing. For the
most part I have succeeded! I have found HiSoft PASCAL
to be very versatile and able to do as much as can be done
in Sinclair BASIC and a heck of a lot faster. Most recently,
I have written a function for creating UDGs within a
PASCAL program. I hope that I can find a kindred spirit
among the members of T/SNUG. I close in the hope of
hearing from you soon.
David Solly
ac3 5 5@freenet carleton . ca
Ottawa, Ontario, CANADA
Voice: (613) 731-2120
My apologies to all especially to you, Abed, as it
relates to delayed or unfulfilled space in ZQA. The bulk of
the shipment is cassette SW, a lot of which is unlabeled or
loose (unboxed) where only verification thru loading would
prove its value Is this a daunting task or what? Anyway, I
decided part of my problem was trying to find this stuff on
the list, when it wasn't even there or what I had was a
partial to the list.
Also, many of the items need to have a description to
complete their value and then there's the desire to know if it
works or if two or more, does one work and the other is
only good for parts and how to decide who gets what or do
I just reach in and ship and let whomever get whatever.
13 QL's this was the kicker, not on the list and
some work, haven't tested all
II 2068 some work didn't test all
31 1016 16K RAM PAK in original boxes
11 Magicbridge 16K RAM w/ made in Gr.
Britain on box
1 Memotech 32K RAM w/ a feed thru so you
stack another 16K/32K on w/ docs
3 cases 48ea 2040 thermal paper on unopened
ZXir QLive Alive! 4
- tested one Ok.
1 Miracle-disk adapter for Trump Card (QL
HW)
4 2040 thermal printer - in orig. boxes like new
8 Alphacom 32 thermal printer.
2 A&J 2000 drives w/ 30 wafers
13 LKDOS A3 dock board EPROM's
13 EZKEY keyboard interface PCB - no chips
just the board
I included the last two items to show the variety of the
misc. stuff that's not listed. There are dock boards w/chips
that I have no way of knowing what they are except that
two are marked w/Oliger's name. One says Oliger User
Cartridge The other JLO 8084. I could throw them into
a 2068 and see what comes up on the screen Or they could
be fried and could fry a good 2068????? And all of this
takes time. Later,
J Shepard
Jshepard@netins.net
John J Shepard HI
281 130th St
Ogden I A 50212
515 846-6378
Hiroshima '45 - T/S '83 - Chernobyl '86 - Win'95 & Win'98
Hi Abed;
I finally managed to hook myself up with a 2068
(thanks to Frank Davis) In order to help with my
addiction, I've set up a email list on my server. I'm also
working on a website, but that's a few weeks off from being
online (digitizing manuals, researching components, and
whatnot).
I'm writing to invite you and anyone interested
within the T/SNUG crew aboard. To subscribe, do
the following: Send an email message from the
account you want to subscribe to
Majordomo@unixville.com
with no subject and the content of the message as
follows: subscribe 2068.
You'll receive a confirmation reply notice from
the list mail program; following the instruction to
complete the signup. If you need to contact the list
administrator, send email to
2068-owner@unixville.com
I was hoping that you'd put this little note in the
T/SNUG newsletter.
If anything, let me know when the ire meetings
are, and I'll try to make an appearance. Also, how can
I subscribe to get the newsletter? Thanks!
Lo uis F i orit 2068 List Admin
See Your Hometown As Viewed From Space
Satellite Images of the USA now online at
http://observe.iw.nasa.gov/nasa/gallery/landsatapp/landsata
ppdesc.html
Ever wonder what your hometown looks like from
outer space?
You've heard stories about China's Great Wall being
visible from the Moon (stories that, well, aren't true), but
now you really can check out the Earth from far above. In
an online article, NASA's Observatorium lets you observe
the continental United States — including your town —
through "Satellite Images of the USA."
Winter 1998
It's online now at
http://observe.iw.nasa.gov/nasa/gallery/landsatapp/landsata
ppdesc.html
Satellite Images of the USA is a collection of Landsat
satellite images that allows Web surfers to take a virtual
tour of America from high above. At your fingertips are
images of the US you've probably never seen before - the
country's color, water, vegetation, forests, cities, and more,
as seen from an orbiting space satellite.
After downloading the images (they're 130K, so allow
some download time), visitors to NASA's Observatorium
can view the US from more than 700 mile s above Earth
The exhibit provides a key for viewer interpretation of the
images, and lets you explore, from an outer space
perspective, specific are as of the country in simple point-
and-click fashion.
Its homepage is located online at
http://observe.iw.nasa.gov20
CONTACT: Scott Gillespie
NASA's Observato rium curator@observe.iw.nasa.gov
Mike and John, Don and Bob,
I am getting ready to get out of the Z88 and the QL
business on computers. My Amiga business is so large I do
not have time for all of them. I am willing to part with a
large^ amount of stuff, very cheaply, such as MacLinks for
$5, Serial cables for $3, one Meg RAMs for $80, etc. If
interested let me know. I have a South American who has
expressed an interest but have told him I want to check with
you USA first. Contact me soon on this as time is
important. A good chance to get a lot of stuff very cheap
and keep it here in the USA.
Frank Davis
FWD Computing
fdavis@iquest.net
http ://members. tripod. com/~F WDcomp uting/
Just got this this evening, Abed. I'm shocked! I don't
know that I want this out in the news just yet until we hear
more and think th is over. — ==GAT0R== —
I should have done what I just did before sending thai
last note yesterday, but anyway here it is:
To get a better understanding of what's going on with
Frank and some great news at the same time you need to
visit his Web site
http ://members.tripod ., com/~FWDcomputing/index. html
you won't believe what's there. I'm not sure how it all
relates to his offer to Fink, which doesn't please me, but I'll
bet you can call him, Bob. Please do. The bottom line is
that what's on his web pages provide info that could excite
all of us orphan owners and could reinvigorate the club and
the members. Let us know what you find. I'm writing for
the Z-88 catalog of ritajean@hotmail.com next. Later,
J. Shepard
Hi Abed,
The banks, post offices and exchange house have
conspired to make payment of membership dues very
difficult.
1) US post offices no longer accept Canadian postal money
orders - even when drafted for US dollars.
2) The banks charge an outrageous exchange rate on small
amounts and $4.50 handling fee. An international bank
money order for US $12 is about Can $22.50!
3) The exchange houses will not sell less than US $20 in
US dollars. Therefore, I was thinking of sending you:
1) A personal check for Can $18 plus barter, or,
2) Can $15 in bills plus barter.
As barter, I have about 5 articles on HiSoft PASCAL -
- both programs and programming— in WordPerfect 5.1
format which I can put on a diskette and send with my
subscription. There is probably enough material to create a
whole issue dedicated to PASCAL programming on the T/S
2068.
Please let me know what you want.
Please give me your snail mail address so that I can
mail you a copy.
David Solly
1545 Alta Vista Dr. Apt. 1402
Ottawa, Ontario
Canada K1G3P4
/ would like to have the above in the next ZQA!
issue if you don't mind?
I have no problem with that.
Take care. David Solly ae355@freenet carleton.ca
O ttawa, Ontario, CANADA Voice: (6 1 3) 73 1 -2 1 20
>"If anything, let me know when the ire meetings are, and
I'll try to make an appearance."
/ am missing something here. Please bring me up
to date. What/Who is IRC?
Hehe, I'm confusing groups here... There is a NY
Sinclair club that has monthly meetings in NY and
simultaneously on IRC (internet relay chat). I think they
get together once a month, either the first or second Sunday
of the month. But I'm not sure. If I find out I'll let you
know, OK?
Thanks Louis Florit
Hi Abed, ~
I'm writing from work because I just remembered
something I wanted to tell you and have been forgetting.
TEJ Computer Services is still alive, at least a little. The
owner is Terrance Jarvis and he still has TS items. The
reason my mail came back is that he now has a different
address
I've bought a few of his 2068 software programs for
$4 each. He stated that he had hardware and software for
TS computers. I've been trying to get a list of his items for
quite some time now, but haven't seen one yet. I'm not
really sure if he wants to be re-listed in ZQA! or not. I
mentioned to him that his listing was dropped and that he
should contact you, but I don't think he has.
If you want to contact him his email is: tej@jps.net
Jack Boatwright
From: "John J. (Jay) Shepard, III" <jshepard@nltm7.net
Subject: Fw: Z-88 catalog
Date: Mon, 12 Oct 1998 21:35:09 -0500
>Thought you two might like to read this. I got her email
address as a link on Frank's web-site I included the garbage
it took to get it here as I've never seen that much before. J
»From: Rita Willis <ritajean@hotmail.com
»Subject: Re: Z-88 catalog
Please send me your catalog. I'm most interested in
being able to interface my V.4 Z-88 with my PC and QL.
Snail mail address is: 281 - 130th ST., Ogden, IA, 50212.
Fax number is same as reg ph., 5 1 5-846-6378.
If you have use for it, please send after midnight
Central Daylight Time to lessen confusion of occupates
trying to answer a fax call. Thanks, J
«< Hello J (?)
Frank Davis has told me of you that you were a Sinclair
ZXir QLive Alive!
Winter 1998
user. Saul and I are presently on a sabatical for a few
months touring Europe. We are in the process of buying out
Frank (some of his stock is going to go down to Texas I
think to John Rish who has done z88 repairs for the last
several years.
Til we are back Frank and his wife are doing the
shipping and such for us. We have a package for the PC/QL
to Z88. It includes all needed cables, QL software on MDV,
PC software on plug-in Eprom cartridge and PC disk. We
are selling them at this time as a combo for $40 Should
you want one before we get back (sometime between the
end of Decmber and the middle of February) just go ahead
and send the order to Frank and he will take care of it.
Otherwise you could just wait. We felt we needed a long
vacation after spending 30 years with the State Dept.
Sincerely,
Rita Jean Willis
ritajean@hotmail. com
How
Just a short message to those on this list and their interested
friends For those of you in places other than North
America (and who feel you can afford the trip or just want
to make it part of a vacation) as well as those in North
America — we are looking at having two QL and it's
derivatives (as well as other Sinclair and Cambridge based
computers) shows here in the USA next year. One will be
near San Francisco on the West coast and the other a bit
inland from the East coast (probably back at Bedford, PA).
The time period being looked at is in either May or early
June of 1999. Tim Swenson and Don Walterman (both on
this list) are looking to be the anchor men out West, and
unless someone else wants to step up and do it, then my
wife Carol and I will once again do it on the East coast
Now what I need are for people to let me know they are
truly interested and if so, what they would like to see
repeated or changed about the previous shows If I do not
hear from enough people... then I shall just drop the
whole idea and figure you have no interest. This especially
goes to all the lurkers and people who only on a great
occasion feel the urge to speak up. As anyone who has ever
put on a show can tell you there is a lot of work that goes
into it. We want it to have enough people to make it
worthwhile for dealers both in North America and
elsewhere to make the trip. Yep, you guessed it.... that
means they need for people to not just come and talk, but to
part with some of their money, that is what fuels further
development It has to at least pay for itself even for
hobbyists. None of them are under the illusion they will get
rich by vending at a QL show.. ..but it at least has to pay for
itself and all the extra would not hurt
End of commercial, now back to your regular broadcast.
Most replies to this can be made directly to me rather than
the group, unless they are a need to know item for others.
Thanks!!!
US® 00EEKJ0Q
fdavis@iquest.net
http ://members. tripod. com/-FWDcomputing/
Working to make computing fun!
Hi Abed,
I have finally published my very primitive TS web
page. I'm still not ready for general release to the public as
I can't get the few links I have to work right .
Anyway, I thought I'd let you take a look and give me
some feedback. I will continue to improve it, but have been
very busy with work and family so don't have a lot of time.
It's at: http://www.outlawnet.com/~jboatno4
Takej^arc^^
J> /3 # b \fi Yesterday J>j3jtbl|/3
J>/3#bt|.fi Yesterday, J>j9#bt|J9
All those backups seemed a waste of pay.
Now my database has gone away
Oh I believe in yesterday.
\>\&}>fi\& Suddenly, \>\fi}>fl\fi
There's not half the files there used to be,
And there's a milestone
hanging over me
The system crashed so suddenly
I pushed something wrong,
what it was I couldn't say
Now all my data's gone away
and I long for yesterday-ay-ay-ay.
bfi$\>\fi Yesterday, J>J3#bl|J3
The need for back-ups seemed so far away .
I knew my data was all here to stay,
J>j3fcjj3 Now I believe in yesterday. J>-f3t|«F3
I have about 4 articles ready to send you. They all deal
with HiSoft PASCAL programming. In fact, there is
probably enough to to make a special PASCAL issue of
ZXir QLive Alive!
Will you have any problems decoding Unix-to-Unix
Encoded Word Perfect 5.1 (DOS) files? I believe I asked
you this before but I seem to have lost your reply. Also, are
you familiar with what a PASCAL source code listing
should look like? I am sure you do but I am asking because
I once submitted a source code listing to a newsletter as a
WP 5.1 file only to have it botched up because the editor
used a proportional font to print out the file which ruined all
the indentation in the source code listing
If you get back to me, I could probably send you some
files tonight.
David Solly
/ can decode almost any TEXT format.
Articles are welcomed, an ytime HI Thank you.
Dear Abed,
I am sending you a check for $20 towards my next
year's membership subscription to help keep ZXir QLive
Alive! and well I really enjoy being kept up to date on
what is going on in the Sinclair world.
I have a problem that you may be able to help me
solve. I am just about 82 years old and find that I have
accumulated a whole lot of Sinclair computers, an original
Mcintosh that is a Mac Plus, and even an old TRS-3 with
two 80 track DSDD drives. I have a ZX-81 with a full
keyboard, program tapes, 64K memory, two Westridge
2050 modems with Smart Terminal 1 . I also have a Timex
1000 plus many folders of documentation for these
computers.
I have a TS-2068 with AERCO 40 track DSDD floppy
drives plus the CPM program with 80 character lines and
documentation plus LKDOS plug-in V3 for FD-68 disks. I
also have an interesting adapter for the 2068 that lets you
write out phonetic words and sentences in English and it
ZXir QLive Alive!
Winter 1998
will actually read what is written and speak it back on the
adapter's loud speaker. This program uses the three voices
of the 2068 built-in sound chip to accomplish this amazing
feat.
I have an extra QL computer that I find as surplus and
not needed anymore.
What would I do with this equipment to put into
someone's hand who will want it? I am not thinking of
selling it but maybe I could give if away id
someone who would use « for a good purpose.
I will keep my QL with its GoldCard, Minerva ROM,
Hermes 220, two 5 % 80 track DSDD floppies, two 3 V 2 ED
floppies, and a Qbide hard disk setup and a Seikosha serial
printer. I will keep my Z88 with its Epson serial printer as I
find it very portable and it works with my Mac as well as
the QL. For the moment, I will keep the Mac because of
the info currently stored on its hard drive and the several
programs and fonts available that are not on the QL.
As you can see, I really have to peel down and dispose of
some of this computer equipment before I get too senile to
use any of it. I find That I haven't used the ZX-81's and
TS-2068 at all now that I have the QL setup.
A second problem that you may able to Il6lP fflC
solve is (o find a working copy of Assembler
WorKBencb v 1.5 by Talent Computer in England i
wrote to them but they must be out of business since they
never answered my letter. Their program came on a micro
cassette to act as a key so that the program will boot
properly, My original tape and its copies all failed by the
tape getting stuck in the cassette case so it won't play at all.
I have all the programs properly copied on my disks but the
necessary keyed tape is missing. Do you have any
suggestions of where to look for a good working copy of
Assembler WrokBench?
Please keep up your good work for us Sinclair users as
this is one set of computers that I can program and
understand without a lot of new learning required. The
programs I use are simple and I do not need fancy Windows
98 etc. to do the simple tasks I need to accomplish.
Sincerely, John Pegram
1126StradellaRd.
Los Angles, CA 90077
310 472-2467
Dear Abed,
.... I did buy many items from Jack. Thank you for the
information.
I have plenty of other computers an IBM compatible
and some Commodore ones, .but now I am concentrating
on the Timex computers, because there may be little or no
electricity available on and after Jan. 1, 2000.
Last year I bought an inverter for my car that puts out
250 watts of continuous AC power, enough to run a Timex
1000 computer, Timex 2040 printer, and a small black and
white television set. By using a <long> extension cord
computing is possible from inside the house.
Your friend,
Jerry Anson
j erry a@aztec2 . asu. edu
Hello Abed,
He got the Larken fixed (had to replace 5 chips), but
had a note saying the SCLD chip was out on the 2068 and
ZXir QLive Alive!
he couldn't fix it. I have another 2068 so that's not a huge
problem. I haven't had time to set it up and may not until
after the holidays are over. I'm taking 2 weeks off starting
the 19th, so maybe
I'll still get it set up before the New Year.
Take care and Happy Holidays,
Jack Boatwright
Dear Sinclair Users
This letter is to announce the West Coast Sinclair Show,
tentatively scheduled for 5 June in Union City, CA. Before
going too far into organizing the Show we are looking into
how many local Sinclair users would be interested in
attending the Show Based on this survey, we can either
press forward with the show or cancel it due to lack of
attendance
Place Union City. CA ( 15 miles south of Oakland & 15
miles north of San Jose}
Date: 5 June 1999
Time: roughly 10:00 am to 5:00 PM (subject to change)
Cost: approx. $5 - $8 (depending on cost of show location)
Motel of Choice: South Hayward Motel 6 (510) 489-8333
The Show will have something of interest for all Sinclair
users (ZX-81, T/S 1000 T/S 2068 QL, and Z88). We plan
to have a number of dealers from Europe, primarily Jochen
Merz Software and TF Services (Tony Firshman). There is
a lot of new development in the QL world, including a
whole new QL/QDOS based system called the Q40, and the
Milan, an Atari-based system that will run SMSQ, a QDOS
based operating systems.
For the Z88 there is a new newsletter coming out of Ireland
and a bunch of newly available applications. It appears that
FWD Computing (Frank Davis) has dropped support for the
QL and Z88 so we are looking to find out who will pick up
his service For the T/S-2068 and T/S- 1000 fan we plan to
have some information about MS-DOS based emulators for
both computers, including the new Xtenderll.
We still do our best to make the show interesting for all
Sinclair users In addition to vendors and information, there
is always the enjoyment of meeting others that share the
same computing interest. Many of us compute by ourselves
and rarely get a chance to talk to another Sinclair user.
After attending a number of US QL shows, we know that
the camaraderie is the best part of the show .
For the very local or those staying in a Motel, on the night
before the show there will be an informal Bar-B-Q held at
Tim Swenson's house, just 1 .5 miles from the Motel 6.
What we are asking of you, is to let us know if you are
interested is coming to the Show. The existence of the show
depends on getting enough attendees to make it worth the
trip for the European vendors. This is not a commercial
show It is a show put on by a Sinclair user for other
Sinclair users. Please contact Tim Swenson via phone
Mail, or e-mail if you are interested in attending or have
any questions. If you are no longer a Sinclair user and do
not want to be contacted farther, please let Tim know and
he will let other mailing lists owners know
We hope to see you there,
The West Coast Sinclair Show Organizers:
Don Walterman
& Tim Swenson
2455 Medallion Dr.
Union Cit. CA 94587
(510)489-8944 swensont@ja ck. sns.com
Winter 1998
Albrecht, Alvin aralbrec@concentric.net
Anderson, Paul p.aderson@cwix.com
Anson, Gerald j erry a@aztec . asu. edu
Barker Robin Robin@di-ren.demon.co.uk
Bennett, Dave dbennett 1 Q@desupernet . net
Boatwright, Jack jboatno4@outlawnet. com
Boehm, Al boehm@ziplink.net
Boehm, Bill boehm@plh.af.mil
C. A. T. S. mf0002@epfl2.epflbalto.org
Cable, Bill bcable@triton. coat, com
Chambers, George gfchamb@pathcom.com
Collins, Bill bcollins@home. ifx. net
Cottrell, Les jacottre@gte.net
Cruz-Figueroa, Jaime cruzfiguer@aol.com
Dansby, Andrew adansby@atlantic.net
Davis, Frank fdavis@iquest.net
England, William wengland@iname.com
Feng, Al alfeng@juno. com
Fink, Mike domino.cubes@excelsior.net
Florit, Louis florit@wormhole.unixville. com
Franke, John j . m. franke@larc . nasa. gov
Ganger, Gary gangerg@dma. org
Gillespie, Doug aa43 l@cleveland.freenet.edu
Girnius, William girnius w@bls.gov
Harbit, Ken krh03 @csufresno. edu
Henderlight, Mike mikehend@microsoft. com
Henn, Fred oranur@juno.com
Hunkins, James jdhunki@ibm.net
Impellizerri, John j impellizerri@compuserve. com
Jaap, Matthias Matthias Jaap@hhs.hh.schu l e.de
Jonas, Mike mjonas@bbn. com
Jones, Terry tjones@mame. com
Kaczor, Jon 75363. 1 127@compuserve.com
Kahale, Abed akahale@compuserve. com
Kealy, Harriet Joan hjkealy@admin.hilconet.com
Kingsley, Ed elk4@aol.com
Konig, Urs urs.koenig@agrodata. ch
KurtK7 kurtk7@aol.com
Kwitkowski, Phillip kwit47@aoi.com
Lancaster, Garry dharkhig@delphi. com
Lassov, David emanon@azstarnet.com
Lebowitz, Dave dkl@dpliv.com
Lessenberry, Gary glessenb@usr. com
Liebert-Adelt, Peter p.liebert@t-onIine.de
Malloy, Bob 74776. 1 161@compuserve.com
McKelvey, William mckelveyw@delphi.com
Merz, Jochen jochenmerz@j -m-s.com
Miller, Seymour seymil@delphi.com
Muth, Bob bobkeeper 1 @aol. com
Norton, Gary gnorton@world. std. com
Parrish, Gil 107765. 1 161@compuserve.com
Pashtoon, Nazir nazir.pashtoon@ingram micro . com
Payne, Josh joshpayne@bigfoot. com
Pazmino, John john.pazmino@moondog.com
Simon, Thomas 73 1 77 . 3 3 3 @compuserve. com
oKapinsKi, 10m
tsicapins(uy uno . com
Smith, Denms
uenny . smitn(tzy uno . com
oOiiy, JJaviu
ac j j 3(u^rreenet . caneion. ca
otegman, uan
aansteg(oy uno . com
owenson, nm
swensonic(ti}geociiies. com
Swenson, Tim
swensont(titsirciive. csu. sgi. com
owentKo, waiiy
wswentKO(o£ maroon, tc . umn. euu
owoger, K-Ooen
ceng 1 u 0 (axeman . mox . com
1 ayior, Jen
j etayior(ojspar . ca
Thoresen, Jeff
74200.257@compuserve.com
Walterman, Don
walterm@ix. netcom. com
Washington, Barry
mf0002@epfl2.epflbalto.org
BUG in SOL BBS
Weil, I found one, and there may be others, as you can see :
After Larry Kenny called the BBS, we decided to
receive remote messages with the use of the instruction
INPUT#7;A$, since it is implemented at the (fast) system
level, rather than in Larry's (slower) BASIC code.
Yeah, but INPUT A$ cannot accept quotation marks
in A$
So, this is a request for any additional characters besides
", the quotation mark, which causes the INPUT A$
instruction to blow up !
KEEP ON TIMEX'n
David E. Lassov: Sysop,
SOL BBS @ 520-882-0388 (data ) 520-882-3972 (voice)
emanon@azstarnet.com (email)
2590 N. Jordan DR
Tucson AZ 85745-1132
Abed, "
First, thanks for the cartoons, they help to brighten a
busy and overworked day. For a few weeks now, with the
Xmas season upon us we have been getting between 2-300
Amiga software orders a day, so are quite busy.
I had meant to do up an ad for the next issue but
seem to have run out of time.
All of my Z88 and QL stuff is sold. What I
do have left is T-shirts for QL, TSNIJG
and Z88. I also have mouse mats for
them. I also still have my Speccy97, Retro
Gold and Speccy Classix CDs and amiga
Forever CDs that were in my last ad.
Prices are the same and what is not sold by
the end of January goes to Brazil. Anyone
who wants any of this had best do so soon.
Thanks, Frank
FWD Computing
PO Box 17
Perry, Russ Jr
slapdash@enteract. com
Rigter, Wilf
rigter@cafe.net
Rish John
7460 1.153 5@compuserve.com
Shepard, Jay
j shepard@netins. net
Mexico IN 46958 USA
fdavis@iquest. net
ht1p://members.tripod.com/~FWDcomputing/
Working to make computing fun!
ZXir QLive Alive!
8
Winter 1998
FROM THE CHAIRMAN'S DISK
new aa
H
■ wrote to Tim Swenson to ask about the 2050 serial port
to Z88 and he gave me what he thought was the proper
way to interface it. But it leaves a little to experiment
with. However I leaned that Tim now has a house and a
newaddress. (see Unclassified Ads section)
ad a call from Fred Stern and he reported that Bob
Gilder died on or about the first day of November. A
neighbor had noticed him sitting at the kitchen table
in the evening and he was still there and looked like he
wasn't moving the next morning so he called the police.
They broke in and found him dead. Bob was one of the
dedicated members of LIST.
Wrote Jack Boatwright in regards to my having to
dispose of my newsletters and TS 2068 computer
i • — ■„ - •
equipment and I
haven't heard from him. I
had offered to send it
shipping free so I guess
the offer still goes.
While I have disk
drives that will
work on the TS-
2068 and Oliger or
LarKen disk interfaces I
won't ship them without
postage reimbursement
since they are really
heavy. The drives would
include several drive cases
with power supplies. I will
need to know in December
since I will have to start
cleaning them out soon.
Amove is contem-
plated from here in
Auburn during the
year of 1999 and at the
moment where to is not
sure. I have been given the
ultimatum of not moving
boxes and boxes of com-
puter JUNK! The JUNK!
is my wife's words not
mine. Later I will work
with an MSDOS clone of
some kind and will very
likely have the ZX-81 and
TS-2068 emulators as well as the SPECTRUM. And I will
still have the Z88 so I will still be in the TS community.
I saw Frank Davis last Saturday at the Ft. Wayne Ham and
Computer Fest. Since Frank is mainly into Amiga he is
doing great in that field. Still has some Z88 and that sort of
stuff to sell.
)een having a lot of household troubles. Not with my
| wife but the house. First we put in a new dishwasher
and when the disposal was disconnected from the old
dishwasher the connector on the disposal for the dishwasher
discharge hose was broke off to the point where it barely
SlUU It
It
ZXir QLive Alive!
could be clamped to. So I replaced that. All I can say they
sure have made it easier to replace with a different type of
assembly. I have put in three prior disposals and all of those
had to be hold up while you tried to connect them up to the
sink. Now you connect a subassembly to the sink and then
you rotate the disposal into place which makes it very easy.
And the first time I did not have to redo the plumbing to get
it to fit. I was amazed at how easy it was
FBl he nigilt °f November tenth a portion of our privacy
H fence was blown down by the storm. What actually
■ happened was that two posts had rotted and broken
off at ground level.. And our homeowner's insurance has a
hundred dollar deductible. And so to save the hundred dol-
lars I dissembled the fallen fence and borrowed a clamshell
| post hole digger and dug
| two holes next to the ce-
n mented in old posts and
set in place two new post
| of pressure treated 4 X
4's. The lumber and the
two bags of readymix
was delivered Monday. I
finished the fence yester-
day (November 18th).
Sunday (November 15th)
our garage door opener
quit raising the garage
door The helical gear
that the worm gear that is
on the motor shaft turns
apparently has stripped
all the teeth off. So Tues-
day we went to Sears to
see if they had an opener
that was similar to the
one that died. There are
some differences could
have probably used the
same track and chain but
I didn't want that to go
bad and have to redo the
installation. I started that
this morning and right
now I am installing the
light beam and sensor
which is a feature that is
mandatory for garage
doors now. Supposed to prevent injury to a child or dog or
even a person. In the morning I will finish the installation
and then do the set up for proper closing and for the safety
features. Right now I open and close the door manually and
lock it by Clamping a C clamp on the track. I lucked out
since they had these units on a special purchase and sale
plus a coupon discount. The old unit was in use 16 years
The life of a garage door opening is from 15 to 20 years.
Booking at the electronics of the garage door controller
il see that it could be easily converted to turn on
^something. It would make an interesting project.
Winter 1998
S2
Back to uploading and down loading programs from the
Z88 to the TS-2068: I remember seeing an article about
how to use a modem to modem with out Ma Bell being
between. I will find that and get the 2050 modem and the
Z88 modem going - 1 hope.
I have been looking at the PC's and have started to figure
bout when some of the salespeople are spoofing me. I was
originally wanting to use a ZIP drive BUT! I was lead to
understand that would be better off with a CD ROM burner.
The disks are about a fifth the cost and there is a lot more
capacity on the CD.
With all our trouble with our house I guess we are
lucky since we don't have hurricane or flooding
damage. I have seen the destruction in Germany
during W WII and in Korea during the war in 1950 and
1951. If you don't have too much and you loose that
This is it till next time. 0/0
Rising TO9P_QCQ(Eq^
by AL Feng
Over a year ago, I read a request asking how to use
the FOP_OVER facility found in TK2_EXTensions
instead of OPEN_NEW.
Others are better qualified to explain some of this. Let me
simply state that you need to OPEN a device before you can
access it; and, when you are done using it, you should
CLOSE it.
f~7 Tsing FOP_OVER lets you set an error trap for a
Vf I "bad" medium - where "bad" can mean any of a
^■''variety of problems such as a missing physical
medium. If the error is recognized, instead of having the
program crash, recovery can be to another location in the
program.
f *v he following examples are actual PROCedures used
O Jin both QLAMBer (FOP_OVER) and QLATter
(OPENJNEW). I hope this is still useful
information, and my apologies for its tardiness .
HERE'S HOW
C omparing and contrasting should be the easiest way
to see how comparable tasks are implemented; so,
this is more show then tell.
To begin with the obvious, here is the PROCedure used in
QLATter
650 DEFine PROCedure Access: DIM Z$(610,32):
DELETE t$&a&F$
660 OPEN NEW#6,t$&a&F$
670 DIR#6,t$a&" "&RN$: CLOSE#6
680 OPEN_IN#7,t$&a&F$: FOR c=0 TO 610
690 IF EOF{#7) THEN EXIT c
700 INPUT#7,Z$(c): END FOR c: CLOSE#7: c=c-l : END
IF : END DEFine
You should be able to see that the PROC-
edure using FOP OVER is very similar.
650 DEFine PROCedure Access: DIM Z$(610,32):
DELETE t$&a&F$
660 uk=FOP_OVER(#6,t$&a&F$):
IF uk<0 THEN iX: CLSd: AT#2,24,37: REPORT#2,uk:
PAUSE 50: zCLS: tre=0: WCh
670 DIR#6,t$&a&"_"&RN$: CLOSE#6
680 OPEN_IN#7,t$&a&F$: FOR c=0 TO 610
690 IF EOF(#7) THEN EXIT c
700 lNPUT#7,Z$(c): END FORc: CLOSE#7: c=c-l: END
IF :
END DEFine
Z$(q,l) is a DBVIensioned array where 'q' is the number of
entries (in this case 610, two of which are related to the
medium header) and T (the filename length is 32
characters long in this instance).
1 use variables, but you don't have to:
t$ = "flp"
a= 1
F$ = "JFLIST_imp"
RN$ = (this is optional; and, can be omitted)
nnn DEFine PROCedure ix: PRINT "invalid
device":END DEFine
nnn DEFine PROCedure zCLS: (clears part of the
screen)
nnn DEFine PROCedure WCh: (this is where I want the
program re-directed; 'tre' is a pointer).
I hope these two examples and limited explanation are
adequate.
If you have any questions, feel free to contact me .
( Happ-£ eJrails,
Apd Qomf utina, "¥ou .
1 il
r\ LiLr^TL} of [_<2rr\en Procedures- an unctions- in {— ftSoft T
PASCAL for Seq uenticJ -{— -ile J— UnJIing
Written by Larry Kenny Edited by David Solly
"his Hi Soft PASCAL source code provides the
procedures and functions required for reading and
writing sequential files to a LarKen DOS formatted
diskette.
Program LkDOSLib;
A Library of LkDOS File Procedures and Functions
OpenFile- Open For Sequential Read
RdChar - Read 1 Char From File
Eof- True If Last Char Has Been Read
CloseFile - Closes Buffer, Frees DOS Commands
GoToDrive - Select Drive 0 or 1
Catalog - Simple Cat List
istory:
Written by Larry Kenny
Navan, Ontario, Canada, 1989
VAR C : CHAR;
A : INTEGER;
FLAG : BOOLEAN;
FUNCTION Eof : BOOLEAN;
BEGIN
ZXir QLive Alive!
10
Winter 1998
INLINE (#CD, #62, #00, #3A, #0F, #20, #FE, #40,
#28,#04,#3E,#FF,#18,#01,#AF,#DD,#77,#02,
#CD, #BA, #00) ;
END;
PROCEDURE Catalog;"
BEGIN
INLINE (#F3, #CD, #62, #00, #AF, #32, #1D, #20
, #CD, #7E, #00, #CD, #7B, #00, #21, #88
, #20, #3E, #0D, #D7, #06, #03, #23, #7E
, #FE, #FA, #28, #20, #FE, #FF, #20, #F6
, #23, #7E, #FE, #FE, #28, #F0, #7E, #FE
,#FD,#28,#06,#E5,#D7,#E1,#23,#18
, #F5, #05, #28, #DD, #3E, #20, #D7, #3E
, #2 0 , #D7 , # 1 8 , #DA, #CD, #BA, # 0 0 , # 0 0 ) ;
WRITELN;
ENDj
PROCEDURE Go T o Dr i ve ( DV : INTE GE~R ) ~;
BEGIN
IF (DV=0) OR (DV=1) THEN
BEGIN
DV:=(DV+1) *2;
POKE (23728, CHR(DV) ) ;
INLINE (#CD, #62, #00, #3A, #B0, #5C,
#32, #03, #20, #CD, #BA, #00) ;
END
ELSE WRITELN ( ^NON-EX IS TANT DRIVE');
_ END;
PROCE DURE OpenFi Te";
BEGIN
WRITE RENTER FILE TO OPEN ») ;
READLN;
INLINE (#CD, #62, #00, #21, #0F, #77, #11, #22,
#20,#06,#0A / #7E,#FE,#20,#30,#02,
#3E, #20, #12, #23, #13, #10, #F4, #3E,
#00, #32, #B0, #5C, #CD, #84, #00, #3A,
#20,#20,#FE,#0A, #28,#2B,#CD,#87,
#00,#21,#44,#20,#22,#2C,#20,#2A,
#2C, #20, #23, #22, #2C, #20, #7E, #FE,
#F9, #28, #19, #32, #1D, #20, #CD, #7E,
#00,#CD,#7B,#00,#21,#88,#20,#22,
#7C,#20,#3E,#40,#32,#OF,#20,#18,
#03, #32, #B0, #5C, #CD, #BA, #00, #00) ;
IF PEEK (2372 8, CHAR) =CHR (10) THEN
WRITELN ( *FILE NOT FOUND' ) ;
_ END i
PROCEDURE RdChar (VAR~ 'chTcHAR)";"
BEGIN
INLINE (#16, #05, #CD, #6A, #00, #DD, #6E, #02,
#DD,#66,#03,#77) ;
END ; _
PROCEDURE "cioseFile;
BEGIN
INLINE (#CD, #62, #00, #AF, #32, #0F, #20, #CD, #
BA, #00) ;
END; _
BEGIN {Mainline program and
Demonstration }
GoToDrive (0) ;
Catalog;
OpenFi le;
REPEAT
BEGIN
RdChar (C) ;
WRITE (C) ;
END;
UNTIL Eof;
CioseFile;
END.
DataStore() and DataFetch()
Two LarKen DOS Procedures For HiSoft™ PASCAL By David soiiy
When you have become spoiled by having a disk drive
system on your Timex/Sinclair 2068, such as I have,
you soon begin to wonder what use is there in having
a compiler which allows you to write programs which are
easy to maintain and run like wildfire when compiled but
grind snail's pace when they have to access the cassette
drive to store or fetch data. 1 This has been the problem
with HiSoft PASCAL, Version 4 compiler for the
Timex/Sinclair 2068, (henceforth: PASCAL); however,
with the new procedures DataStoreQ and DataFetchQ
variable data can be stored to and fetched from disk under
LarKen DOS.
How The Procedures Work
W 11 versions of PASCAL use a stack in one form or
n another to keep track of parameter passing amongst
procedures and functions. HiSoft PASCAL uses the LX
register to perform this function. In the case of
DataStoreQ and DataFetchQ, thirteen bytes, starting from
LX+2, become reserved in the IX register when the
procedure is called. Depending upon whether it is the
DataStoreQ or DataFetchQ procedure that is being called,
the first two bytes contain the number of bytes which are to
be transferred to or from the disk. This number is usually
ZXirQLive Alive! ~~ 11
passed to the procedure through the function SIZEQ. 2 The
next two bytes contain the start address of the segment to be
transferred to disk or to where it is to be placed in RAM.
This address is usually supplied through the function
ADDRQ The remaining nine bytes contain the name under
which the data will be stored to, or, fetched from the disk.
In the demonstration program the variables Name and
FileName have been created of the user defined type
iostring to pass the file name from where it is read from the
keyboard to the procedures Once the required information
has been passed to the procedure being called, the INLINE
routine in turn transfers the information to certain memory
locations in the LarKen DOS cartridge and invokes the
proper routines within LarKen DOS to store or fetch the
data.
Demo Program 3
The demonstration program creates a small telephone
directory in which you can store ten names and ten
numbers. The program will ask you to enter ten names
and numbers to fill the directory. Next it will ask for a
name under which to store all the data which you have
entered into the variable Directory to the disk. Finally it
will ask for the file name of the data to retrieve from the
Winter 1998
disk. When you first run the program you will have to
reuse the name you just used to store the data or the
program may crash If you run the program several times
and create a number of files on the disk under different
names you can then use any of these names and the data
stored under the name selected will be retrieved and
displayed.
Program LISTing
TelephoneDirectory
Purpose
This program creates a small telephone directory to
demonstrate how data can be write and read to disk under
LarKen DOS using the procedures
DataStoreO and DataFetchQ and also to
demonstrate how a type may be developed to
emulate the type String which is found in
other versions of PASCAL.
History
Based upon an example in the Hi Soft PASCAL manual
String emulation by David Solly.
LarKen DOS I/O features by David Solly and Larry Kenny.
Ottawa, Ontario, Canada,
25 March 1990. Revised: 4 November 1998.
CONST
MaxLen = 32, { Maximum length for the "string" }
MaxEnt = 10; { Maximum number of entries in
the telephone directory }
TYPE
{ An array type for holding file names }
FileNameType = ARRAY[1. .9] OF CHAR,
{ A special type to emulate a "string" }
StringType = RECORD
CharStr : ARRAY [1. MaxLen] OF CHAR;
Len : INTEGER
END;
{ A base type for each entry in the directory }
EntryType = RECORD
Name : StringType;
Number : StringType;
END;
VAR
Directory : ARRAY [1. MaxEnt] OF EntryType;
I : INTEGER;
Ans : CHAR;
FileName : FileNameType;
PROCEDURE StrRead (VAR EntryData : StringType);
{ A procedure to read each character that is
entered while keeping track of the number of
keystrokes as the information is placed into
the array }
BEGIN
EntryDataLen := 0;
{ Required in HiSoft PASCAL,
see the manual }
IF EOLN THEN READLN;
WHILE NOT EOLN DO
BEGIN
EntryDataLen := EntryData.Len + 1;
READ(EntryData.CharStr[EntryData.Len])
END;
READLN; { Required after READ }
END;
PROCEDURE StrWrite(VARPrintData : StringType);
{ A procedure to write out the information
contained in each string }
VAR
Letter : INTEGER;
BEGIN
FOR Letter := 1 TO PrintData.Len DO
WRITE(PrintData . CharStr[Letterj)
END;
PROCEDURE ReadData;
{ A procedure to read names and numbers
into the telephone directory }
BEGIN
PAGE;
FOR I :=1 TO MaxEnt DO
BEGIN
WITH Directory[I] DO
BEGIN
WRITEf Enter Name ',1:2,', Please >');
StrRead(Name);
WRITELN;
WRITE('Enter Number, Please >');
StrRead(Number);
END;
END,
END;
PROCEDURE PrintData;
{ Reads the information contained in the
telephon directory }
BEGIN
FORI := 1 TO MaxEnt DO
BEGIN
WITH Directory[I] DO
BEGIN
StrWrite(Name);
WRITE(' ');
StrWrite(Number);
WRITELN
END
END
END;
PROCEDURE DataStore (Name : FileNameType;
Start, Bytes : INTEGER);
Purpose:
Writes data to the disk
History:
Concept and research by David Soliy.
Machine code by Larry Kenny
BEGIN
INLINE (
#F3, #CD, #62, #00, #3E, #0B, #32, #02,
#20, #DD, #E5, #21, #22, #20, #06, #09,
#DD, #7E, #06, #FE, #00, #20, #02, #3E,
#20, #77, #23, #DD, #23, #10, #F1, #DD,
• #E1, #CD, #CC, #00, #DD, #6E, #04, #DD,
#66, #05, #22, #33, #20, #DD, #6E, #02,
#DD, #66, #03, #22, #31, #20, #CD, #CF,
#00, #3A, #64, #00, #FB
);
END;
PROCEDURE DataFetch (Name : FileNameType;
ZXir QLive Alive!
12
Winter 1998
Start, Bytes : INTEGER);
Purpose:
Reads a file from the disk drive.
History:
Concept and research by David Solly.
Machine code by Larry Kenny.
BEGIN
INLINE(
#F3, #CD, #62, #00, #3E, #64, #32, #B0
#5C, #3E, #0B, #32, #02, #20, #DD, #E5
#21, #22, #20, #06, #09, #DD, #7E, #06 '
#FE, #00, #20, #02, #3E, #20, #77, #23 '
#DD, #23, #10, #F1, #DD, #E1, #CD, #C6,
#00, #3 A, #B0, #5C, #FE, #65, #28, #15
#DD, #6E, #04, #DD, #66, #05, #22, #33
#20, #DD, #6E, #02, #DD, #66, #03, #22,
#31, #20, #CD, #C9, #00, #3 A, #64, #00,
#FB
);
END,
aim Pfogyam
BEGIN
PAGE;
WRITELN('The object of this program is to demonstrate');
WRITELN('how type may be developed to emulate the'); '
WRITELN('type String which is found in other versions');
WRITELNCof PASCAL and also to demonstrate how
data');
WRITELNC stored within records and arrays may be');
WRITELN('transferred to and from the LARKEN Disk');
WRITELNC system using the procedures "DataStore()"
and');
WRITELN('"DataFetch()". ');
WRITELN,
WRITELN;
WRITELN('Hit any key when ready ')•
READLN;
READ(Ans);
ReadData;
PAGE;
WRITELN('Now to store the data to disk');
WRITELN;
WRITE('Enter a name for disk storeage >')•
READLN;
READ(FileName);
DataStore(FileName,ADDR(Directory),SIZE(Directory))-
PAGE;
WRITE('Data Stored.');
WRITELN;
WRITELN('Now to fetch the data from the disk.');
WRITELN;
WRITELN('Enter a name for disk fetch >')•
READLN;
READ(FileName);
READLN;
DataFetch(FileName,ADDR(Directory),SIZE(Directory));4
PAGE;
PrintData;
WRITELN;
WRITELN;
WRITELN('End of Demonstration')
END.
Actually, the version of HiSoft PASCAL that was
converted for use on the Timex/Sinclair 2068 could
immediately access the ZX Microdrive which was a high-
speed - compared to tape! - mass storage device.
Unfortunately, the ZX Microdrives were relatively hard to
come by in North America.
2 The DataStoreO and DataFetch() procedures, like then-
tape counterparts TIN() and TOUT{), can be used to
transfer virtually any section of RAM, including the screen
buffer, on or off the disk by supplying the start and length
parameters in the locations occupied by ADDRH and
size().
3 Based in part on the HiSoft PASCAL demonstration
program Tape.
4 Unlike its tape counterpart TXNQ, DataFetchQ requires
both the start address and the size of the file in bytes.
Comparison Between 2068, PASCAL
and Compiled BASIC (TIMACHINEJ
by Larry Kenny (Edited by David Solly from Mr. Kenny's 1989 article)
(have been working on using my Timex/Sinclair 2068 to
control a 3-axis drilling/routing machine using stepper
motors. To make the machine move in arcs and circles I
needed to use the sine and cosine functions in the
Timex/Sinclair 2068 ROM. After trying some BASIC and
machine language — using the floating point interpreter —
routines, I found that the program couldn't run nearly fast
enough to keep the machine busy at full speed.
I asked David Solly, who is a long time HiSoft
PASCAL user, to write me a test program using its
sine/cosine functions so I could test it against
Timex/Sinclair 2068 BASIC and compiled BASIC.
The test program plots around a circle 100 times.
The results:
ZXirQLive Alive!
T/S-2068 BASIC interpreted 150 seconds
Compiled BASIC (Timachine) 126 seconds
Hi-Soft PASCAL 18 seconds
Wow! The PASCAL really flies even when doing
floating point math. It has all its own math
routines built in so it doesn't do any ROM calls.
That also means that the compiled code can be burnt into an
EPROM and run on a Z80 based CPU without the
Timex/Sinclair ROM resident.
The compiled BASIC is only slightly faster that regular
BASIC when the floating point routines are used.
Even calling the Timex/Sinclair 2068 floating point
13
Winter 1998
routines from machine code doesn't make much difference.
If you are writing a program that does a lot of
calculation such as a spread sheet, 3d graphics, or
CAD etc., PASCAL will far out perform BASIC.
Timex/Sinclair 2068 BASIC Circle Listing
5 REM ! OPEN # (Timachine only)
10 LET RAD = 50
20 FOR A=0 TO 628 STEP .5
30 PLOT 80 + RAD * SIN A , 80 + RAD * COS A
40 NEXT A
50 PRINT "END OF PROGRAM "
HiSoft PASCAL Circle Listing
PROGRAM CIRCLE;
PROCEDURE PLOT (ON : BOOLEAN; X, Y :
INTEGER);
BEGIN
IF ON THEN WRITE(CHR(21),CHR(0))
ELSE WRITE (CHR(21),CHR(1));
INLINE (#FD, #21, #3 A, #5C,
#DD, #46, 2, #DD, #4E, 4,
#CD, #E5, #22);
END;
PROCEDURE CIRC;
CONST RAD = 50;
VAR
A: REAL;
ON : BOOLEAN;
BEGIN
A:=0;
ON ;= TRUE;
REPEAT
PLOT (ON, ENTIER(80 + RAD * SIN(A)),
ENTIER(80 + RAD * COS(A)));
A:= A + 0.5;
UNTIL A > 628;
END;
BEGIN (*MA1N PROGRAM*)
CIRC;
WRTTELN ('END OF PROGRAM'),
END.
Hacker's Journal
Supporting Ail QL Programmers
#29 October 1998
The QL Hacker's Journal (QHJ)
is published by Tim Swenson
as a service to the QL Community. The QHJ is freely
distributable. Past issues are available on disk, via e-mail,
or via the Anon-FTP server, garbo.uwasa.fi. The QHJ is
always on the look out for article submissions.
QL Hacker's Journal
c/o Tim Swenson
2455 Medallion Dr.
Union City, CA 94587-1914
swensont@geocities. com swensont@j ack. sns . com
h11p://www.geociues.conVSilconValley/Pines/5865/index.html
Editor's Forum
I'd like to thank Per Witte for providing pretty much the
core part of this issue. I saw the Filename Parser program
posted to the QL-users mailing list and thought it would be
good material for an article. I contacted Per and he was
willing to write something up. The length of the article was
more that I expected, but I'm not complaining.
I'm still pressing forth with the Qlib Source Book. I've
been delayed by a broken hand (out of cast and getting
better). I'm pushing myself to get something out soon,
even if only about 10% of what I would like to see in the
Book. I'm looking for information about the history of
Qliberator (the various releases) and any bugs in the current
release (3.36). If you have some info, please send it to me.
My other project is the QL PD Documentation Project (I'm
using PD loosely to mean freely available). I'm trying to
collect (in one location) a variety of released information
about the QL and QDOS. Currently I have a number of
documents, including parts of the QL User Guide, a couple
of Tutorials, and a few articles that I've scanned in from
IQLR. Please take a look at my web site to see what I've
gathered. It is:
www. geocities. com/SiliconValley/Pines/5 865/
Shelling Out To SuperBASIC
The QL is unique in how QDOS and SuperBASIC are sort
of rolled into one Just as we can only have one copy of
QDOS running, we can only have one copy of SuperBASIC
running (OK, I know this is not true for Minerva).
In a traditional operating system model, there is the OS and
the Shell. The Shell is a user interface to the operating
system. In UNIX there are many different shells; Boune
(sh), C (csh), Korn (ksh), etc.. In MS-DOS the shell was in
COMMAND.COM. Even with Win95, there is a MS-DOS
Shell still available.
In most OS's, there can usually be more than one shell
running at one time. Application programs can fire off
another Shell and run one or more commands. The new
shell becomes a child process of the calling application.
All of this comes about because the shell is nothing more
than another user application On the QL we are limited in
that only one copy of SuperBASIC can be run at one time at
it must be Job 0.
In QDOS, user applications can call other programs. An
editor could call C68 to compile a program that was just
edited and saved. But when the command needed to run is
a built-in SuperBASIC command (which includes
LOADable extensions), there is no way to shell out to
SuperBASIC to run the command.
Iran into this problem when I wanted to ran Qliberator
from within MicroEmacs. MicroEmacs allows for
executing programs from MicroEmacs, but I could not
ran all the command for QLiberator that I needed. To
explain, here are the steps to run QLiberator:
1 . Load the program into SuperBASIC
2. Call "Liberate" to create a working file.
3. Execute Qlib
Here is a the steps in SuperBASIC terms:
LOAD FLP1 TEST BAS
ZXir QLive Alive!
14
Winter 1998
LIBERATE FLP1 TEST BAS
EXEC QLIB
Since I can't call LOAD or LIBERATE from within
MicroEmacs, I thought 1 could write a SuperBASIC
program and then compile it. This may work with
LIBERATE, but LOAD is not a command that QLib will
compile.
I thought I was stuck until 1 started reading the HotKey
System E manual. It was there that I ran across the two
commands, HOTCMD and HOTDO.
HOTCMD assigns to an ALT key, a command that
will be entered in the SuperBASIC window (#0). It
does not have to be an executable program, but can
be a SuperBASIC statement or a resident command ( like
TKII or DIYtoolkit). HOT CMD "picks" the SuperBASIC
interpreter to the top and the command is sent to
SuperBASIC to be run.
The HotKey System II was designed to be driven by the
user. It is the user typing in a HotKey sequence that puts the
System into motion. There in a HotKey command that
allows automation of the HotKey System: HOT DO.
HOT DO tells the System to implement a HotKey.
HOT DO('a') is the same as the user hitting the ALT-a
keys.
Using HOTCMD and HOTDO in conjunction, the
programmer can perform actions just as if they were
"shelling" out to SuperBASIC. In the case stated
above, here is how I would use the two commands to
automate using Qliberator:
10file$ = M fl P l_test_bas H
20 ERT HOT CMDCa', 'LOAD ffle$')
30 HOTDO('a')
40 ERT HOT CMD('b ! , 'LIBERATE file$')
50HOTDO('b')
60 EXEC QLIB _ OBJ REMark Just EXEC it.
I can get away with having LIBERATE in a compiled QLib
program, but not LOAD. Here is a way to get around this
limitation.
Parameter Passing Techniques In S* BASIC
Per Witte
In QHJ#24 and #25 there were articles on parameter
passing techniques (By Tim Swenson and by Peter
Tiliier, respectively). I won't (too much) re-hash what's
already been said (this article was prepared before I was
aware of the other two), but look at the matter in a
practical way, that may suit some readers.
I'm using SBASIC for this article - the enhanced
SuperBASIC interpreter that comes with SMSQ and
SMSQ/E. SBASIC behaves somewhat differently to
SuperBASIC with respect to variable handling, and has
some desirable features, not available in standard
SuperBASIC. Where this affects the subject at hand I shall
try and point out the differences. However, I am
presently not able to test my examples in SuperBASIC
so some incompatibilities (i.e., bugs) may be found. Please
always ensure that the techniques described work with
your version of S*BASIC before relying on them in any
way.
«< Value or Reference? »>
There are two ways of passing parameters to functions
and procedures in S*BASIC: by value, which is perhaps
the "intuitive" m ethod; and by reference, which will be the
ZXir QLive Alive! 15
main focus of this article.
Passing parameters by value is (what we may THINK)
we normally do. RUNning the program fragment below
10 test 11,2,3
99 :
100 defproc testl(a,b,c)
110 print a,b,c
120 enddef
130;
would print "1 2 3" on your screen (with any luck!). And of
course:
1 0 x=l :y=2:z=3 ;. rem Assign values to some variables
20 testl x,y,z: rem and use these instead,
does the same . But a small modification of test, test2,
shows what's really going on:
99 .
100 defproc test2(a,b,c)
110 print a,b,c
120 a=a+a:b=b+b:c=c+c:rem Double all parameter
variables!
130 enddef
140 :
The new harness:
10x=l:y=2:z=3
20 test2 x,y,z
30 print x,y,z
12 3 <- prints out x, y, & z, as expected
2 4 6 <- but what's going on here? We set x,y,z to be
1,2,3!
By altering the values of the parameter variables a, b, & c,
we cause a change to the calling variables x, y, & z too.'
This is a call by reference; we don't pass to the procedure
merely the values the variables contain, instead we refer to
the original variables - a, b & c ARE x, y, z, only by a
different name. As you will appreciate passing parameters
by reference is not always desirable. In fact, unless you
specifically want to do so, it could be a real pain: You can
see how a procedure might easily (and unintended by
you) alter its parameters, and thereby variables external
to itself. To avoid this you can apply the rule never to alter
a procedure's formal parameters within the procedure; or
you must, pass your variables by value only. But how to do
that?
If you typed: test2 1,2,3, what do you think happens to
a, b, c? Well, their values are simply thrown away
when the routine returns. By extension, the same
holds good for: test2 p+l,q+l,r+l, having previously set
p, q, r to some value. Anything other than a variable is
considered an expression in this context, and can therefore
not receive a return value.
Thus:
10x=l:y=2:z=3
20 test2 (x),y+0,z A l
30 print x,y,z
1 2 3 <- prints out x, y, & z, as expected
1 2 3 <- prints out x, y, & z, as expected(?)
Good programming practice would avoid altering the
parameter variables - copy their values into LOCal
variables instead! In my opinion, test2 (x),(y),(z) gives
the clearest indication of intent, besides being (marginally)
faster than say, x+0,y+0,z+0, and so is a good convention
to adopt for call by value.
Winter 1998
«< Coercion »>
There are other "oddities" about the way parameter
passing works. For example:
10x$=*a':y=3:z%=3
20 test3 x$,y,z%
30 print x$,y,z%
99 :
100 defproc test3(a,b,c)
110 print a,b,c
120a = a&a:b = b/2:c = c/2
130 enddef
140:
RUNning this program produces:
a 3 3 <-x$ y z%
aa 1.5 2
Not what you'd think, looking at the formal parameters a, b,
c! However, this can be very useful, as will be shown later.
Things to watch out for though are: You may assume that
the formal parameter decides the type, when it actually is
the calling parameter that does so! An example might be:
10x=l:y=4
20fast_testx,y,10
99 :
100 defproc fast_test(a%,b%,c%)
110 rep loop
120 a%=a%+l:b%=b%+b%:c%=c% div 3
130 if c%=0:exit loop
140 endrep loop
150 enddef
160 :
You're expending all this effort optimizing fast Jest;
changing out floating point variables with integers, and the
like. You need not have bothered! This is what it's actually
doing:
120 a=a+l :b=b+b:c=c div 3
In fact everything runs in (relatively) slow floating point!
The correct moves are:
10x%=l:y%=4:z%=10
20 fast_test x%,y%,z%
will pass integers to fast_test, and/or
100 defproc fast Jest(a%,b%,c%)
1101ocr%,s%,t%
1 20 r%=a%: s%=b%:t%=c% etc. .
What you then use in the formal parameter list is
irrelevant (except as a reminder as to what the
correct type should be!) Also copying the
parameters into LOCal variables will coerce the parameters
back to the desired type. In tk2 there are commands to test
the parameters that are passed to a procedure: PARTY?
tells you the actual parameter type (nul (never nul in
SBASIC), string, float, or integer) and PARUSE whether
the parameter is an array or not.
< Returning Values through the Parameter List >
A "by-product" of the ability to pass parameters by
reference, is that we can actually return more than one
value to the calling program. Both functions and
procedures can be used for this. I find the
function_error = Function(update-able parameter list)
construct particularly useful, as I hope to show. Below
follows a commented listing on a filename parsing utility
for S*BASIC that hopefully illustrates the technique :
1 PRINT, '(Simplyfied) Filename Parser'
2 REMark ©OPWitte 1 998
3 PRINT, ! ! ! ! ! PD - No Warranties' ! ! ! ! !
4 :
5 dfnm$- win l_bas_util_fnm_ParseFnm_bas'
6 er=ParseFnm(dfhm$,ddev$,ddir$,dnm$,dext$)
7PRINT\\ , Fnm: , tdfhm$\\ , Dev: , !ddev$\ , Dir: , !ddir$\
8 PRINT , Nme: , !dnm$Vxt: , ]dext$VErr. , !er
9 STOP
10:
Above. The first part of the program gives some
information, and shows and example of usage.
32724 DEFine FuNction ParseFnm(f$,v$,d$,n$,e$)
This part of the program is the object of the enterprise; the
file name parser itself. Due to the nature of the QL's file
system (FS), it is impossible to determine how much of the
latter part of the name is filename and how much is
directory name merely by inspecting the filespec. You
have to actually open the file (or its directory) to find out ,
The function does this, and then breaks up the filespec
according to a mixture of known facts and assumptions
(i.e., it's not foolproof!) It puts the different sections into the
supplied variables, and returns ok.
The function is defined as a floating point function,
even though its main task is to manipulate, and you
might say, return text. In this, simplified, version
any values pre-supplied in v$ ...e$ are overwritten. The
only parameter you should supply is the f$ (for Full
" Filespec) This is (more or less) expected to be in the form
of:
key: <> = name, | = or; [j = optional (0.. 1);
{} = repeated (0. )
<sep> = directory separator, '_'
<exsep>= extension separator, '_ 1 .' (SMSQ/E)
<filespec> =
<device name><drive number (1..8)><sep>
{<directory section><sep>}
[<filename>[<exsep>[<extension>]]]
32725 LOCal c,t,p%,i%
32726 REMark Split filename into components
32727 c=FOP_DTR(f$):IF c<0:RETurn c
FOP_DIR is a function (introduced in Toolkit LTI (tk2), by
Tony Tebby, and included with many disk interfaces, and
in SMSQ*). It tries to make the best of the information
supplied, and will open the first directory that matches the
first part of the filespec. So if you have a directory
called 'winl_asm_' (but none called 'win! _asm _prg_...')
and you did a ERT FOP _D3R(winl _asm_prg_temp) the
function would open directory 'winl_asm_' taking the rest
of the filespec to be a filename!
32728 d$=FNAME$(#c):CLOSE#c
FNAME$ (also a function from tk2) returns the name of
any file, also directory files. So, continuing our specific
example above, d$ (for Directory) would how contain 'asm'
- Note the device name is not returned.
32729 IF LEN(d$) THEN
FNAME$ did return (at least the first) part of the directory
name, e.g. 'asm'.
32730 p%=d$ INSTR f$:IF p%=0:RETurn -7
If the filename returned by FN AMES is, after all, not in the
filespec return the error Not Found.
(This would be the case if you tried to:
DATA USE 'winl asm 1
ZXir QLive Alive!
16
Winter 1998
ERT F0P_DIR(#3, , abc_test , )
FNAME$(#3) would then return 'asm')
32731 d$=d$&*_'
If d$ _is_ a substring of filespec, append the filename
separator (as the last one is not stored in the directory
file).
32732 ELSE
At this point d$ is " This could mean that <root> had
been specified; that no matching directory was
found (e.g. had we specified 'winl_prog_temp_..'
and there was no *winl_prog_./ ); or that something
was wrong.
32733 p%=0JINSTR f$)+l
Do a primitive test on the filespec to see if it contains a
devicename, e.g. 'winl ..'.
32734 END IF
32735 v$=REMV$(p%,LEN(f$),f$)
v$ stands for deVicename. v$ gets set to the first part of
filespec, up to the first underscore.
32736 IF LEN(v$)<3:RETura -12
Better would have been:
32735 IF p%<3 OR p%>5:RETurn -12
This version of the filename parser doesn't support
networked drives, so:
32735 IF p%o5:RETum -12
would be correct here. Then:
32736 v$=REMV$(p%,LEN(f$),f$)
Tests whether the first part of the filespec is a possible
devicename. (Devicenames can only legally be 3, 4, or 5
characters long, as in: 'S7J, *n63_*, 'ram2 '. Anything
other is an error. Further tests should be done here to
determine whether v$ is legal 1 device name, but there is no
easy way of knowing for sure. (Try:
OPEN_NEW#3; 'flp7_test':PRINT FNAME$(#3) and see
what you get (presuming you don't have an flp7 )
32737 IF p%+LEN(d$)=LEN(f$) THEN ' "
32738 n$=":e$="
We allow filespec to be incomplete from devicename
down. In the case above filespec = device name &
directory name, i..e. there is no filename and no extension
32739 ELSE
32740 n$=REMV$(l,p%+LEN(d$>l,f$)
There is a name (and possibly an extension). Let n$ (for
fileName) hold it for now
32741 p%=0
32742 FOR i%=LEN(n$) TO 1 STEP -1
32743 IF n$(i%) INSTR *_.'.p%=i% EXIT i%
32744 END FOR i%
Here we just check filename from the end of the string for
the first V or '_' it encounters. This, it decides, will be the
extension.
32745 IFp%=0THEN
32746 e$="
No extension found.
32747 ELSE
32748 e$=REMV$(0,p%-l, n $)
32749 n$=REMV$(p%,99,n$)
Slice filename into name part and extension part
32750 END IF
32751 END IF
32752 RETurn 0
Return OK.
ZXir QLive Alive!
32753 END DEFine
32754 :
The final part of the program is a help-function
REMOVES (shortened to REMVS in its S*BASIC
incarnation) all it does is to simplify string slicing by
encapsulating all the error trapping. It won't be looked at
here.
32755 DEFine FuNction REMV$(fr%,to%,str$)
32756 IF fr%< 2 THEN
32757 IF to% >= LEN(str$):RETum "
32758 RETurn str$(to% + 1 TO LEN(str$))
32759 END IF
32760 IF to% >= LEN(str$) THEN
32761 RETurn str$(l TO fr% - 1)
32762 ELSE
32763 RET str$(l TO fr% - 1) & str$(to% + 1 TO
LEN(str$))
32764 END IF
32765 END DEFine
32766 :
The weird numbering scheme is to enable the function to
be easily MERGEd into a larger program that needs
it; linenumbers <100 can be removed after testing.
«< Arrays as Parameters »>
Also arrays are passed by reference; when you supply an
array parameter you are allowing the procedure to access
your actual array. The same rules described above
regarding type coercion also apply to arrays.
Unfortunately, S*BASIC provides only limited mass
operations (for lack of a better term) on arrays though you
can pretty much slice them up any which way you choose.
This comes in handy if you want to write your own mass-
ops in S*BASIC or machine code. You can't do a = b with
arrays in S*BASIC but you can write your own EQU a TO
b, which does exactly the same (see commented listing of
EQU below)
1 DEVI a$(2,2,2,2,6),b$(2,2,2,2,8)
2 DIM a(2,2,2,2),b(2,2,2,2)
3FORi%=0 T0 2:FOR j%=0 TO 2:FORk%=0 TO
2 FOR 1%=0 TO
2:a$(i%,j%,k%,3%)='L'&i%&j%&k%&l%
4 count%=0
5FORi%=0 TO 2 FOR j%=0 TO 2:FORk%=0 TO
2:FOR 1%=0 TO
2 :a(i%,j%,k%,l%)=count% . count%=count%+ 1
6 :
Above. Initialize a few test arrays (use plenty of
dimensions :) Note you'll have to modify all integer
FOR-loops to make this program run under plain OL
SuperBASIC!
10CLS:PRTNTa$,\
12er=EQU(b$,a$)
14 CLS#0:CLS#2:PRTNT#2;b$,\:PRINT#0-er
16 BEEP 2000,20:PAUSE
18 CLS:PRINT !a!\
20 er=EQU(b TO a)
22 CLS#2:PRINT#2!bl\:PRTNT#0;er\
24 BEEP 2000,20
26 :
Test harness. Edit to taste.
100 REMark EQU SBASIC function to
101 REMark EQUate two arrays of the
17
Winter 1998
102 REMark same dimensions and type
103 REMark Requires tk2 or equivalent
104 :
105 REMark □PWitte, August 1998
106 REMark For "educational" purposes only
107 REMark Use at own risk. No warranties!
108 :
Can't say you haven't been warned!
1000 DEFine FuNction EQU(a,b)
The idea is to equate array a with array b in a reasonably
rational manner, while demonstrating some of the niceties
of parameter passing techniques using arrays, at the same
time.
The first thing to note is that EQU will handle any
type of array i.e., integer, sting, & float - although
the parameter list only shows float! Also, any
number of dimensions are handled. The only provision, in
this implementation, is that they are of the same type and
have the same number and size of dimensions (except
string, in the last dimension).
lOlOLOCaler
This nice little feature of "inheritance" is not documented
anywhere, as far as I know:
A LOCal variable defined in one procedure will remain
local in any procedure called by that procedure, unless
the variable has been "re-defined" by a subsequent use of
LOCal.
Here the local variable, er (error flag) is set in EQU,
the calling function, and modified in EQN/EQS.
Yet a variable er, defined in the initial code,
outside any procedure body, would retain its original
value. The only danger lies in that if the same sub-
routines were to be reused by another procedure, you may
forget to declare it as LOCal in the calling procedure and
end up mysteriously modifying a GLOBal variable instead!
It certainly saves the repeated overhead of stacking a local
variable for each recursive call to EQN/EQS here, as
would be the case if we defined er EQN/EQS.
1020 IF PARTYP(a)<>PARTYP(b): RETurn -15
1030 IF PARUSE(a)oPARUSE(b):RETurn -17
Checks whether parameters are arrays, and of the same
type. The error checking here is not foolproof.
1040 er=0
1050 IF PARTYP(a)=l THEN
1060 RETura EQS(a,b)
1070 ELSE
1080 RETurn EQN(a,b)
1090 END IF
String arrays must be handled slightly differently to
numeric ones, in that the last dimension is the string
itself. It might be possible to find a universal algorithm, to
handle numbers and strings, but it makes sense to use the
built-in mass assignment features and copy whole strings at
once, rather than byte by byte. So the string and numeric
sides have been implemented as separate functions.
Another advantage is that this offers the opportunity to
optimize them (how ever slightly) for their different uses.
11 00 END DEFine
1110 :
2000 DEFine FuNction EQN(a,b)
2010 LOCal i%
Another reason for separating out these sub-routines as
functions, is that we can take advantage of the
interpreter's excellent array slicing abilities, as in line 2070.
2020 IF DIMN(a)oDIMN(b):RETurn -4
Every dimension has to match in size, This test will
be performed before any processing takes place. The
alternative would be to use a special sub-routine.
2030 IF DIMN(a(0))=0 THEN
Look-ahead: If the next dimension is past the last, then
this is the dimension we can work with:
2040 FORi%=0TODIMN(a):a(i%)=b(i%)
Copy this dimension from b to a, element by element.
This also terminates recursion at this level.
2050 ELSE
2060 FOR i%=0 TO DIMN(a)
2070 er=EQN(a(i%),b(i%)):IF er<0:EXITi%
2080 END FOR i%
More than anything, a function like EQU wants speed,
so loops have been specialized, reducing the overheads of
test & branch. The use of recursion is almost necessary,
thanks to the parser's array-slicing abilities!
2090 END IF
2100 RETurn er
The error-checking stuff is not strictly necessary in
a programming toolkit - error-checking is
performed at the program level - but it's easier to
delete it than add it when needed (e.g. during program
development).
21 10 END DEFine
2120 :
3000 DEFine FuNction EQS(a,b)
Pretty much the same as for EQN above, but optimized
for string operations.
3010 LOCal i%
Note that the same technique cannot be used for i% as er
i%'s value will be different at different levels of
recursion i.e., i% has to be saved between levels.
3020 IF DIMN(a)<>DIMN(b):RETurn -4
3030 IF DIMN(a(0,0))=0 THEN
This arrangement was actually a bug, as no
comparison is made on the last dimension.
However, as the interpreter doesn't complain and
simply ignores any supernumerary characters, I thought
I'd leave it there as a feature.
le, DIM a$(5,10),b$(5,8): er=EQU(b$,a$)
works, though any strings longer than eight characters will
be truncated.
3030 IF DIMN(a(0,0))=0 THEN
Remember a() refers to an array of type string! Operations
can be performed at a higher structural level, so we
terminate recursion one level up.
3040 FOR i%=0 TO DIMN(a):a(i%)=b(i%)
Copy one whole string at a time
3050 ELSE
3060 FOR i%=0 TO DIMN(a)
3070 er=EQS(a(i%),b(i%)):IF er<0:EXIT i%
3080 END FOR i%
3090 END IF
3 100 RETurn er
3 110 END DEFine
3120:
Genuine bug/incompatibility reports, suggestions and
comments welcome. Send to pjwitte@knoware.nl
ZXir QLive Alive!
18
Winter 1998
Unclassified
Ads
Place your ads here, it is FR E 17
Mail to: A. KAHALE 3343 S FLAT ROCK CT SIERRA VISTA AZ 85650-6874
SPECTRUM for your 2068
If you are a LarKen LK-DOS owner and would like to run SPECTRUM
programs on your system, we will supply a V2 EPROM, socket and
74HCT32 for $12 which includes shipping and handling. The instal-
lation instructions are in your LarKen manual. We shall not be respon-
sible for your install job. AERCO owners need only the EPROM for
$ 1 0 forwarded to LarKen.
Bob Swoger Address on page 2
747 Jfltgrji ^Simulator
So you like to fly, the 747 Flight Simulator for SPECTRUM by Derek
Ashton of DACC. Requires a SPECTRUM equipped 2068 Supplied
on LarKen SSDD or DSDD LarKen disk for $10 which goes to Derek
now working at Motorola with Bob.
, BobSwoger Address on page 2
A Strategic Generic War Game for the TS-2068
C ON© U C $ I
> Available on tape, or disk, AERCO, Oliger. Game and map
SAVEs in BASIC allows conversion to your system.
> Completely in fast machine code. Games can be SAVEd and
CONTINUEd. Price $19.95 + $2.50 S&H.
Order from:- or>
Lloyd Dreger SMUG
2461 S. 79th St Box 101
West Allis Wl 5321 9 Butler Wl 53007
The John Oliger Co.
11601 Widbey Dr.
Cumberland IN 46229
The John Oliger Floppy Disk System
FOR THE TS-2068
Disk Works
Expansion Board
2068 User Cartridge
Disk Boards "A" & "B"
2068 Parallel Printer Port
2068 EPROM Programmer
2068/SPECTRUM Joystick Port
DFh Mapped Universal I/O Port board
Us£ r ^l2222L22lLLllQQ_^^ (Read before you buy)
Service For America's
Favorite Home Computers and Their Accessories
I N C LAI
TIMEX ADAM ATARI IBM OSBORNE
TI COMMODORE TRS-80
BUY SELL TRADE UPGRADE
ZXir QLive Alive! ' "
Repair Charge Examples
TS-1000, ZX-81, 1016 RAMPack, Memotech, ZEBRA Talker,
MIRACLE Centronics, RAM Centronics
$5.00 each + parts & shipping.
TS-2020, 2040, PC-8300, ZX-80, TT-99, Z-SIO, Byte-Back,
AERCO 2068 Centronics, BASICare, LarKen RAMDisk
$10.00 each + parts & shipping.
TS-2068, Spectrum, A&J MicrD, Miracle 51 2K, LarKen 1000
& 2068 EDI, Kempston FDI, Cumana FDI, CST EDI,
$15.00 each + parts & shipping . July 1,1996
Reasonable flat rate plus parts and shipping.
Write or call for prices , SASE appreciated
COMPUTER
CLASSIC
RT1, Box 117
Cabool MO 65689
Phone 417 469-4571 417 467 -457 1
ZX-TEXT - Word Processor
ZX-CALC - Spreadsheet
Business Software
Cycle Accounting Financial Report Generator
ZX-CALENDAR - Time Management
ZX-81 TS-1000 TS-1500 TS-2068
Albert F. Rodriguez
A.F.R. Software®
1605 Pennsylvania Ave 204
Miami Beach FL 33139
305 531-6464
QLAMBer $20
QLuMSi $20
SeekQL $10
Upgrades $5
PLATYPUS
:
SOFTWARE :
□
V-
fit feng
914 Rio Vista Cir SW
Albuquerque NM 87105
(505) 843-8414
19
Winter 1998
&
Bill Cable
ARCHIVE Based QL Software
QLerk - A complete financial program for the QL
QLerk software (v3.21) with tutorial
QLerk manual
QLerk software & manual
DBEasy - A menu based database system
DBEasy software (v1 .6)
DBEasy upgrade from V1 .5
DBProgs - A toolkit of ARCHIVE procedures
DBProgs software (v1.8)
DBProgs upgrade from V1 .7 $7
DBTutor - A general purpose learning program
DBTutor software(v1 .5)
PC DBEasy - Just like QL DBEasy but, you must have
PC ARCHIVE to use It.
PC DBEasy software (v1.3)
Wood & Wind Computing
RR3 BOX 92
Cornish NH 03745 USA
Phone (603) 675-2218
Email : bcabie@triton.coat.com
$29
$29
$50
$24
$7
$18
$12
$12
810 254-9878
14 hours a day
300 to 28,800 bps
Supporting all Sinclair and Timex users Fidonet
echomail areas for Sinclair computers Lots of new
files for you to download such asTS-2068 emulator
for those who use a PC give us a call and let us
know what you want to see
Message area and file area
QL International, Quanta, QL Hacker's Journal,
Spectrum/2068, ZX-81/TS-1000, Z88, NetMail,
emulators, pointer, FDFormat for QXL/QDOS, etc.
Sysop John J Impellizzeri
Co-Sysop Don Walterman
Uti c a, Michigan 7 US A
ID c m i n o C u lb e s
Hardware 5 Software
352 7 th Ave. 15 th Fir.
New York, NY 10001
Phone 212 631-7563
Fax 212 947-5069 Voice mail pager 917 490-8407
Domino.cubes(5>excelsior net
Make David an Offer
ZX-81/TS-1000 TS-2068
Hardware Kits
Real Time Clock I/O Controller RS-232
Centronics l/F 1 6K & 64K RAM 300 BAUD
Modem A-D Converter(assembled)
BYTE-BACK INC
536 Long Ter
Leesville SC 29070
LISTing Newsletter
Tlie Long Island Suiclaii/Ximex \J-
Robert Malloy, Treasurer
412 Pacific St.
Massapeque Park, NY 11762
Robert Gilder
New England Sinclair QL Users Group
16 Highland Ave
Saugus MA 01906
617 233-3671
QL Hacker's Journal
Supporting All QL Programmers
Timothy Swenson, Editor
2455 Medallion Dr.
Union City, CA 94587
swensontc@geocities com
http :://www. geocities. com/ SilconValley/Pines/5 865/
CATS Newsletter
The Capital Area T/S Users Group
Barry Washington
7044 Cindy Ln
Annandale VA 22003
301 589-7407
BBS 301 588-0579
Internet mfU002@epfl2 . epflbalto. org
Chicago Area Timex Users Group
Robert Swoger
613 Parkside Cir
ZXir QLive Alive!
20
Winter 1998
Streamwood IL 60107-1647
630 837-7957
CENG-108@emai I . mot., com
The Ram top
Newsletter
The Greater Cleveland T-S User Group
Thomas Simon Editor
615 School Ave
Cuyahoga Falls OH 44221
E-Mail CIS 73177,333
Jon Kaczor Production
4568 Williamson Ave
Brooklyn OH 44144
75363.1 127@compuserve.com
Peter Liebert-Adelt
LUETZOW STR 3
D-38102 BRAUNSCHWEIG
GERMANY
Email: p.liebert@t-online.de
http://home.t-on]ine.de/home/p.liebert/zx-teara.htm
Amateur Radio: DK4BF@DB0FC.#NDS.DEU.EU
Conner QIC-80 tape backup (kit) with four
new (sealed) pre-formatted tapes very little use $75.00 (In-
cludes shipping)
Al Feng
914 Rio Vista Cir SW
Albuquerque, NM 87105
(505) 843-8414
WANTED: Cartridges! For the TS2068: VU-Calc, VU-
File, Budgeter, Pinball, Androids, Penetrator, Zebra OS-64,
LarKenLKDOS, Oliger JLODOS, Spectrum ROM, Backgam-
mon, Blind Alley, Chess, Hungry Horace, Horace & the Spi-
ders, Horace Goes Skiing, Zeus Assembler, Zeus Hi-Monitor,
Zeus Lo-Monitor; also EPROMs for the EPROM module. For
TS 1000/1 500: TS1510 cartridge module; cartridges Chess, Su-
permath, States & Capitals, Flight Simulator; Rompak Eprom-
Holder Cartridge and any EPROMs.
Russ Perry Jr.
2175 S Tonne Dr#105
Arlington Hts, !L 60005
847-952-9729
siapdash@enteract. com .
LogiC
Tlae Final Versi
Newly updated, easy-to-read, LarKen
LKDOS ver. 3 Manual
Includes missing information related to the JLO and the
Tasman 'B' CPI, mouse and re-numbering program.
Updated version 6.0 LogiCall Manual
with sections on utilities and BASIC drivers for
modified commercial software and switching system
ROMs without powering down.
Available for $15 from
FWD Computing
Items for the T\S Computers
Timeworks Programming kit #1 For T/S 1000 & ZX81 $4.95
Mindware Gulp Game Timex 1000 & Sinclair ZX81 $4.95
Timex Horace & The Spiders for the 2068 $5 95
Timex Sinclair 1000 software on tape
Chess (16K RAM) qty 5 price $2.95 ea
The Challenger I qty 17 price $2.95 ea
Mindware MW100 plain paper printer for the TS1000 or
ZX81 computer made in the US. $45 .00
All items are new. Please add $3 95 shipping to all orders.
MC, VISA, American Express, phone 717-748-1747
Keith Electronics
224 North Grove St
Lock Haven, PA. 17745
The ZX Spectrum 48/128 Emulator
for IBM & Compatables: Z80 Version 2.01
Turn your PC into a real ZX Spectrum 48/128!
=*- Full Spectrum emulation, border, flash, beeper, Interface 1,
Microdrive in cartridge file, RS232 input and output redirection
to file, COM or LPT, joystick support, 128K sound through
Soundblaster or internal speaker, built-in monitor,
=*- Able to load ANY, even protected or speed-saved program
from tape, to save to tape, to redirect tape loads and saves to
disk for easy file access,
=*- 2500 line English documentation.
=*- Z80 processor amulabon including R register, inofficial in-
structions, inofficial flags,
=*- Runs okay under DOS, Windows and DesqView,
=*- Full source code of emulator and utilities included!
Runs on any 640K PC; too slow for practical use on PC/XT's
but fast enough on AT's ; runs at about 100% on 16MHz AT's
(can be slowed down on faster machines), uses
VGA/EGA/CGA or Hercules.
This program costs US $20. You will receive a 3.5" DD disk
(5.25" disks on request), and you'll be kept informed about up-
dates. Please send bank notes (bills), name and address to:
Gerton Lunter
PO Box 2535
NL-9704 CM Groningen
Netherland
If you send a cheque, please add US $15 extra and allow 4
weeks for delivery
ZXir QLive Alive!
21
The RomDisk! Fully functional!
See previous issue of QL Today Extremely small board for the
QL's ROM-Port, works like a permanent RAM disk, even if the
power is taken away, contents are not lost!
RomDisk 2 MB DM 129
RomDisk 4 MB DM 199
RomDisk 8MB DM 299
Aurora Adapter for RomDisk DM 9 90
Special Offer
The color drivers are coming. In or der to be able to upgrade to
Winter 1998
the color drivers, you need to have SMSQ/E. The normal
SMSQ which is shipped with QXL card will not be able to han-
dle more colors. To benefit from the colors in the future, and
benefit now from the extra features of SMSQ/E, here is a
special offer:
SMSQ/E for the QXL
Only DM 169.
As Aurora owners will be able to use more colors when the
color drivers are available, another offer for SMSQ/E for the
Aurora plus GoldCard/Super/GoldCard;
SMSQ/E for the Super GoldCard
QL Games & Upgrades
QL Applications
ProWesS + Applications
Jochen Merz Software
Im stillen Winkel 12
47169 Duisburg, Germany
© 0203-502011
Fax 0203-502012
Credit Cards accepted
http://www.j-m-s.com/smsq/
e-mail smsq@j-m-s.com
Who is doing it?
QL Today is being published by Jochen Merz Software.
Jochen Merz has been supplying software for the QL for several
years and has built up a good reputation for quality and fair
trading. The representative in Britain is Miracle Systems Ltd.
who take subscriptions and do the distribution. The articles in
the magazine are written by a number of prominent QLers and
the editor is Dilwyn Jones.
Subscriptions
Germany (+German add-on) DM 70
England DM 60 £25
Rest of the world DM 70 £30
Back-issues are available for DM 12 (incl. postage)
Checks should be made payable Miracle Systems Ltd.
English Office
Miracle Systems Ltd.
20 Mow Barton
Yates, Bristol
United Kingdom BS17 5NF
Tel. +44 1454 883602 Fax. +44 1454 883602
Editor
Dilwyn Jones
41 Bro Emrys
Tal-Y-Bont, Bangor, Gwynedd
United Kingdom LL57 3YT
Tel. +44 1248 354023 Fax. +44 1248 354023
$30 Plus $10
for shipping and handling
TS-2040 Printers 16K RAM
We Do Not Ship Outside The US & Canada
Checks, Money Orders and Visa or Mastercard
Call 212-675-8414 FAX 212-675-8980
Zebra Systems, Inc.
122 W26th St. Suite. 904
New York, NY 10001
Shipping is by UPS ground.
Basics of Timex Sinclair 1500/1000 BASIC
A copy of this book is shipped free with each ZX-8 1 kit
Allen Wolach, Separately priced $12 95
BASIC Basics for the Timex/Sinclair 1500/1000
A copy of this book is shipped free with each ZX-8 1 kit.
Michael Barnett//Simon Barnett, Separately priced $12.95
The Ins and Outs of the Timex TS-1000 & ZX-81
Don Thomasson, $12.95
Computer Interfacing Technique in Science TS-1500/1000
Paul Field & John Davies, $12 95
ZX-81 BASIC Programming (in Spanish language)
Steve Vickers (Traducido y adaptado) A copy of this book is
shipped free for asking if you just pay for additional shipping
cost. Separately priced $10
Alec Carswell
MOTIVATION
1 6 Montgomery Ave
Beith Ayrshire KA15 1EL
United Kingdom
Sinclair Resources
Jack Dohany (Developer - 2068)
627 Vera Ave
Redwood City CA 94061
John McMichael (Developer - Graphics)
1710 Palmer Dr
Laramie WY 82070
Bill Russell (QL)
Russel Electronics
RR 1 Box 539
Center Hall PA 16828
Keith Watson
AERCO & Z80 Emulator
41634 Amberly Dr.
Mt. Clemens, Ml 48038
RodGowen (RMG)
14784 S Quail Grove Cir
Oregon City OR 97045-8843
Send them a LSASE and ask for information about
their current products and/or services.
ZXir QLive Alive!
22
Winter 1998